﻿namespace Test0915
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test0915");
            Console.WriteLine("请输入一个整型数组，用空格分割");
            string[] inputs = Console.ReadLine().Split(' ');
            int[] nums = new int[inputs.Length];
            for (int i = 0; i < inputs.Length; i++)
            {
                nums[i] = int.Parse(inputs[i]);
            }
            // 调用函数
            int index = Test1(nums);
            Console.WriteLine($"\n满足右边所有数总和减去左边所有数总和等于该数本身的第一个下标是: {index}");

        }

        static int Test1(int[] nums)
        {
            int index = -1;         // 符合要求的数字下标
            int leftSum = 0;        // 左右所有数总和
            int rightSum = 0;       // 右边所有数总和
            // 遍历数组，右边所有数总和即为整个数组的数字总和
            foreach (int num in nums)
            {
                rightSum += num;
            }
            for (int i = 0; i < nums.Length; i++)
            {
                // 右边所有数总和减去当前的数
                rightSum -= nums[i];
                // 满足题意，获取下标，结束循环
                if(rightSum - leftSum == nums[i])
                {
                    index = i;
                }
                // 左边所有数总和加上当前的数，准备下一次的循环
                leftSum += nums[i];
            }
            // 如果没有满足条件的下标，index不会被重新赋值，仍为 -1
            return index;
        }
    }
}